package upc.dew.inscripcionalumnos.service;

import java.util.List;

import upc.dew.inscripcionalumnos.exception.ServiceException;
import upc.dew.inscripcionalumnos.model.Distrito;
import upc.dew.inscripcionalumnos.model.EstadoCivil;
import upc.dew.inscripcionalumnos.model.Genero;
import upc.dew.inscripcionalumnos.model.TipoDocumento;
import upc.dew.inscripcionalumnos.model.Modalidad;
import upc.dew.inscripcionalumnos.model.Requisito;

public interface CatalogoService
{
    /**
     * Obtiene el listado de distritos disponibles en el catalogo de datos.
     * 
     * @return
     * @throws ServiceException
     */
    List<Distrito> obtenerDistritos() throws ServiceException;

    Distrito obtenerDistrito(String codigoDistrito) throws ServiceException;
    /**
     * Obtiene el listado de estados civil disponibles en el catalogo de datos.
     * 
     * @return
     * @throws ServiceException
     */
    List<EstadoCivil> obtenerEstadosCivil() throws ServiceException;

    EstadoCivil obtenerEstadoCivil(String codigoEstadoCivil) throws ServiceException;

    TipoDocumento obtenerTipoDocumento(String codigoTipoDocumento) throws ServiceException;
    
    /**
     * Obtiene el listado de tipos de documento disponibles en el catalogo de datos.
     * 
     * @return
     * @throws ServiceException
     */
    List<TipoDocumento> obtenerTiposDocumento() throws ServiceException;

    /**
     * Obtiene el listado de generos disponibles en el catalogo de datos.
     * 
     * @return
     * @throws ServiceException
     */
    List<Genero> obtenerGeneros() throws ServiceException;

    /**
     * Obtiene el listado de modalidades disponibles en el catalogo de datos.
     *
     * @return
     * @throws ServiceException
     */
    List<Modalidad> obtenerModalidades() throws ServiceException;

    List<Requisito> obtenerRequisitosPorModalidad(Integer codigoModalidad) throws ServiceException;
    
}